A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates in general to an approved software test and in particular to an improved automated software test. Still more particularly, the present invention relates to a method and system for efficiently training an automated software test.
The present invention involves a method and apparatus for training an automated software test. Automated software testing can be defined as a program that automatically enters a predetermined set of characters or user commands in order to test new or modified versions of software applications. software automation test case testing tools. One of the key issues is the use of parameters by automation tools. Parameters must be known in advance. As the number of parameters increase, the sheer numbers limit what can reasonably be tested.
If test tools can support differing languages, each test tool must have a unique set of parameters. If parameters change from one version of the test tool to another, each different set of parameters requires modification to the system under test and/or the test tool""s parameter handling.
Another key issue is that automated tests are likely to be static (i.e. they are primarily derived from manual test scripts). Therefore, to test new or changed functions, the test case must be revised. This is also true if a new or changed parameter is added or revised. This results in high maintenance.
Yet another key issue is that the function to be tested must exist in some detail for automated test cases to be written. The implication of this is that it is difficult to debug an incomplete function. The coding of the test cases delay the ultimate execution and completion of the testing. In addition, when a new defect is accidentally found outside the testing space, a new test case is required.
The present invention will be better understood and its numerous objects and advantages will become more apparent to those skilled in the art by reference to the following drawings, in conjunction with the accompanying specification.
Currently, it is almost an impossible task to test all the various combinations of parameters within a reasonable time frame. From a mathematical point of view, it is believed to be a solvable problem; however, it would take an almost infinite length of time to solve, and even if one does not need to test parameters, one must test the parameters them because today""s tools need parameters to work.
Current automated test cases are acceptable for regression testing, but are considered unacceptable for non-regression testing (e.g. development systems). The maintenance, as noted, is too high. One changed parameter and the test case must be revised. If the vendor changes the tool, it is likely that the test case must be revised. The maintenance of test cases on a developing system is very high. The user must know what all the parameters are and the function they support before they can begin coding the test case.
The automated software test set forth in the co-pending, cross-referenced application provides a novel quasi-random automated software test; however, it would be desirable to be able to train such a quasi-random automated software test to efficiently find known defects or perform any regression test, as disclosed in the present application.
It is therefore one object of the present invention to provide an improved software test.
It is another object of the present invention to provide an improved or automated software test.
It is yet another object of the present invention to provide an improved method and system for efficiently training an automated software test.
The foregoing objects are achieved as is now described. An automated software test is provided which includes a functional model of a system to be tested. The automated software test is utilized to operate a system under test in accordance with specified facts, goals and rules. Quasi-random actions are taken within the system in accordance with specified rules and facts until a defined goal has been accomplished. Training the automated software test is accomplished by specifying a particular goal, i.e. identifying a particularly known defect, and thereafter running the test in a quasi-random fashion until the particular goal has been achieved. The number and nature of actions required to achieve that goal are logged and the process is then repeated until the shortest path required to achieve that goal has been determined. The log of actions which eventually reach a particularly defect may also be utilized a probable cause tree structure for future analysis.